package com.lmf.boot;

import com.lmf.boot.bean.Pet;
import com.lmf.boot.bean.User;
import com.lmf.boot.config.Myconfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import java.util.Arrays;

/**
 *      主程序
 *      @SpringBootApplication:表示该程序为springboot应用
 */
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {

        //返回IOC容器,固定写法
        ConfigurableApplicationContext applicationContext = SpringApplication.run(MainApplication.class, args);

        //遍历IOC容器中所有的组件
//        String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
//        for (String name : beanDefinitionNames) {
//            System.out.println(name);
//        }

        //从容器中获取组件
//        User user = applicationContext.getBean("user", User.class);
//        System.out.println(user);
//
//        //获取配置类组件
//        Myconfig myconfig = applicationContext.getBean(Myconfig.class);
//        System.out.println(myconfig);
//
//        //调用配置类的方法
//        User user1 = myconfig.user01();
//        System.out.println(user1);
//        System.out.println("==================");
//
//        //输出import添加在容器里面的组件
//        String[] names = applicationContext.getBeanNamesForType(User.class);
//        for (String name : names) {
//            System.out.println(name);
//        }
//        String[] pets = applicationContext.getBeanNamesForType(Pet.class);
//        System.out.println(Arrays.toString(pets));

        //测试ConditionalOnBean注解
//        boolean bean1 = applicationContext.containsBean("tom");
//        System.out.println("容器中tom组件:"+bean1);
//        boolean bean = applicationContext.containsBean("user");
//        System.out.println("容器中user组件:"+bean);

        //测试@ImportResource导入spring配置文件，并获取其中注册的bena管理
//        boolean hhh = applicationContext.containsBean("hhh");
//        System.out.println(hhh);
//        boolean ggg = applicationContext.containsBean("ggg");
//        System.out.println(ggg);



    }
}
